// 封装axios网络请求
import axios from "axios"
import { baseURL, timeout } from "./config";
import { Message } from 'element-ui';
import router from "@/router"


// axios实例对象
const instance = axios.create({
    baseURL,
    timeout
});


// 实例拦截器，拦截前
instance.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    // 每次发请求前要把token带上
    let token = localStorage.getItem("token")
    config.headers.Authorization = "Bearer " + token
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
instance.interceptors.response.use(function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    return response;
}, function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    console.log("请求错误", error);
    if (error.response.status == 401) {
        //如果后端返回的401，那么就代表token失效
        // this.$router.push("/login")
        Message({
            type: "error",
            message: "token无效或者过期，请重新登录！"
        })
        localStorage.removeItem("token")
        router.push("/login")
    }

    if (error.response.status == 404) {
        Message({
            type: "error",
            message: "接口地址错误！"
        })
    }

    if (error.response.status == 500) {
        Message({
            type: "error",
            message: "服务器出小差了，请等待！"
        })
    }
    // return Promise.reject(error);
});




export default instance

